realloc()
এর মাধ্যমে মেমোরি পুনরায় বরাদ্দrealloc()
(reallocation) ফাংশনটি সি প্রোগ্রামিংয়ে মেমোরি ব্লকের আকার পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি পূর্বে বরাদ্দকৃত মেমোরি ব্লকের আকার বাড়াতে বা কমাতে সাহায্য করে। যখন আপনি ডাইনামিকভাবে মেমোরি বরাদ্দ করেন, তখন মেমোরি ব্লকের আকারের পরিবর্তন প্রয়োজন হতে পারে, এবং realloc()
এর মাধ্যমে মেমোরি ব্লকটি পুনরায় বরাদ্দ করা যায়।
realloc()
এর কাজ:realloc()
ফাংশনটি একটি পূর্ববর্তী বরাদ্দকৃত মেমোরি ব্লককে পুনরায় বরাদ্দ করে এবং তার আকার পরিবর্তন করে।NULL
রিটার্ন করতে পারে।realloc()
সফলভাবে কাজ করে, এটি নতুন মেমোরির ঠিকানা রিটার্ন করে, যা আপনাকে নতুন আকারের মেমোরি ব্যবহারের সুযোগ দেয়।void *realloc(void *ptr, size_t new_size);
ptr
– পূর্বে বরাদ্দকৃত মেমোরির পয়েন্টার।new_size
– নতুন মেমোরি আকার (বাইটে)।#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int i;
// প্রথমে 5টি ইন্টিজারের জন্য মেমোরি বরাদ্দ
ptr = (int *)malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
// প্রথম 5টি ইন্টিজার ইনিশিয়ালাইজ করা
for (i = 0; i < 5; i++) {
ptr[i] = i + 1;
}
// মেমোরি আকার বাড়ানো, 10টি ইন্টিজারের জন্য নতুন মেমোরি বরাদ্দ
ptr = (int *)realloc(ptr, 10 * sizeof(int));
if (ptr == NULL) {
printf("Memory reallocation failed.\n");
return 1;
}
// নতুন 5টি ইন্টিজার ইনিশিয়ালাইজ করা
for (i = 5; i < 10; i++) {
ptr[i] = i + 1;
}
// পুরো মেমোরি আউটপুট করা
for (i = 0; i < 10; i++) {
printf("%d ", ptr[i]);
}
// বরাদ্দকৃত মেমোরি মুক্ত করা
free(ptr);
return 0;
}
malloc()
ফাংশন ব্যবহার করে 5টি ইন্টিজারের জন্য মেমোরি বরাদ্দ করা হয়েছে।realloc()
ফাংশন ব্যবহার করে মেমোরি ব্লকটির আকার বাড়ানো হয়েছে, 5টি থেকে 10টি ইন্টিজার সংরক্ষণের জন্য।free()
ফাংশন ব্যবহার করে বরাদ্দকৃত মেমোরি মুক্ত করা হয়েছে।realloc()
ফাংশনটি সফলভাবে মেমোরি পুনরায় বরাদ্দ করলে নতুন মেমোরি ব্লকের ঠিকানা রিটার্ন করে। এটি মেমোরির পয়েন্টারকে আপডেট করতে হয়। যদি আপনি নতুন মেমোরি ব্লকের ঠিকানা ফিরে না নেন, তবে আপনি NULL পয়েন্টার পাবেন এবং পুরানো মেমোরি ব্লকটি পরিবর্তন হবে না।realloc()
ফাংশনটি সফল না হয়, এটি NULL
রিটার্ন করবে এবং আগের মেমোরি ব্লকটি অপরিবর্তিত থাকবে। এজন্য, এটি ব্যবহার করার সময় সতর্ক থাকতে হবে এবং পয়েন্টার যাচাই করা উচিত।realloc()
ফাংশনটি মেমোরি ব্লকের আকার পরিবর্তন করার সময় মেমোরি স্থানান্তর করতে পারে (যদি প্রয়োজন হয়), এবং এই কারণে নতুন পয়েন্টারটি আগের পয়েন্টার থেকে আলাদা হতে পারে।realloc()
ফাংশনটি পূর্বে বরাদ্দকৃত মেমোরি ব্লকের আকার পরিবর্তন করতে ব্যবহৃত হয়। এটি পুরানো মেমোরি ব্লকে থাকা ডেটা নতুন ব্লকে কপি করে এবং নতুন মেমোরি ব্লকের ঠিকানা রিটার্ন করে। এটি মেমোরি ব্যবস্থাপনার জন্য খুবই গুরুত্বপূর্ণ এবং ডাইনামিক মেমোরি ম্যানিপুলেশনের ক্ষেত্রে সহায়ক।
common.read_more